<?php

error_reporting(E_ALL);

if (0 > version_compare(PHP_VERSION, '5')) {
    die('This file was generated for PHP 5');
}

 class Categories
{
    // PROPRIETE
    private $lienBDD;
    private $produit;


    // CONSTRUCTEUR
    public function Categories($pLienBDD) {
        $this->lienBDD = $pLienBDD;
        $this->produit = new Produits($pLienBDD);
    }

    // METHODES
    public function afficherMenuCategorie()
    {
        ?>
            <div style="margin-left: auto; margin-right: auto; width: 80%;">
                <?php
                // Partie du Haut
                    $this->formAjoutCategorie();
                    echo '<hr style="width:65%">';
 
                // Partie du milieu
                    $this->lienModifCategorie();
                    echo '<hr style="width:65%">';
               
                // Partie du bas
                    $this->produit->formAjoutProduit();
                    
                ?>
           </div>
        <?php
    }
    
    // NON PEAUFINNEE
    public function afficherFicheCategorie($pIdCategorie)
    {
        $sql = "SELECT *
                FROM categories
                WHERE id_categorie = ".$pIdCategorie;
        
        $categorie = affichageBDD_uneCol($sql);
        
        ?>
            <form method="post" action="index.php?page=fiche_categorie" enctype="multipart/form-data">
                <h1>Fiche catégorie</h1>
                <p>
                    <label> 
                        Nom de la catégorie :
                        <input type="text" name="champNomCategorie" value="<?php echo $categorie->nom_categorie; ?>">
                    </label>
                </p>
                <p>
                    <label> 
                        Désignation de la catégorie :
                        <textarea name="designation_categorie"> <?php echo $categorie->designation_categorie; ?></textarea>
                    </label>
                </p>
                <input type="hidden" name="idCategorie" value="<?php echo $categorie->id_categorie ?>">
                <?php echo bouton("valider les modifications", "modificationFicheCategorie"); ?>
                <br>
            </form>
            <p>
                <img src="<?php echo $categorie->lien_logo_categorie; ?>"><br>
                <input type="file" name="logo" value="logo">
            </p>
                <div>
                    Sur catégorie : <a href="#"> <?php echo $categorie->id_sur_categorie; ?> </a>
                </div>
                <div>
                    <ul>
                        <?php
                            // Boucle pour afficher l'ensemble des sous catégories
                            $sql2 = "SELECT *
                                     FROM categories
                                     WHERE id_sur_categorie = ".$pIdCategorie;

                            $sousCategorie = affichageBDD_deuxCols($sql2);

                            foreach ($sousCategorie as $value) {
                                echo '<li>'.
                                        '<form method="post" action="index.php?page=fiche_categorie">'.
                                            "<input type=\"hidden\" name=\"valeurFicheCategorie\" value=\"".$value->id_categorie."'>".
                                            '<input type="submit" value"'.$value->nom_categorie.'">'.
                                        '</form>'.
                                     '</li>';
                            }
                        ?>
                    </ul>
                </div>
            
            <h3>
                Produits Associés :
            </h3>
            <div id="listeProduits">
                <?php
                    $sql3 = "SELECT *
                             FROM stocks
                             JOIN produits
                             ON stocks.id_produit = produits.id_produit
                             WHERE id_categorie = ".$pIdCategorie;

                   $listeProduits = affichageBDD_deuxCols($sql3);

                   foreach ($listeProduits as $value) {
                       echo '<form method="post" action="index.php?page=fiche_produit">'.
                               '<img>'.
                               '</img>'.
                               '<input type="hidden" name="valeurNumProduit" value="'.$value->stocks.id_produit.'">'.'<br>'.
                               '<input type="submit" value"'.$value->nom_produit.'">'. 
                            '</form>';
                   }
                ?>
            </div>
            <form method="post" action="index.php?ajoutProduit">
                <input type="hidden" name="idCategorie" value="<?php echo $pIdCategorie; ?>">
                <input type="submit" value="Ajouter un produit">
            </form>          
        <?php
    }

    // NON PEAUFINNEE
    public function listesCategories()
    {
                
        // Récupération des id et des noms des catégories
        $sql = "SELECT nom_categorie , id_categorie, id_sur_categorie
                FROM categories";
        
        $categories = affichageBDD_deuxCols($sql);
        
        if($categories == false){
            return false;
        }
        
        // Construction de la liste déroulante
        echo '<select name="idCategorie">';
        
        foreach ($categories as $champ) {

           ?>
               <option value="<?php echo $champ->id_categorie; ?>">
                   <?php
                       echo $champ->nom_categorie; 
                   ?>
               </option>        
           <?php
        }
        
        echo '</select>';
        
//        foreach ($categories as $champ) {
//            
//            ?>
                    <?php
//                        if($champ->id_categorie == $champ->id_sur_categorie)
//                            echo '*';
//            
//                        echo $champ->nom_categorie; 
//                    ?>  
            <?php
//            
//            if($champ->id_categorie == $champ->id_sur_categorie){
//                
//                $sql2 = "SELECT nom_categorie , id_categorie, id_sur_categorie
//                        FROM categories
//                        WHERE id_sur_categorie = ".$champ->id_categorie;
//
//                $sous_categories = affichageBDD_deuxCols($sql2);
//        
//                foreach ($sous_categories as $champ2) {
//                    
//                    
//                }
//            }
//        }

        
    }
    
    // FINI
    public function lienModifCategorie()
    {
        ?>
           <form method="post" action="index.php?page=fiche_categorie">  
               <div style="float:left">
                   <?php
                        // Liste déroulante de l'ensemble des catégories
                        $this->listesCategories();
                   ?>
               </div>
                   <?php
                        // Ajout d'un bouton de Validation et ajout d'un champ caché pour le traitement
                        bouton("Modifier", "ficheCategorie", 'style="float:left"');
                   ?>
           </form>
        <?php
    }

    // FINI
    public function formAjoutCategorie()
    {
        ?>
           <form method="post" action="index.php?page=fiche_categorie">
               <input type="text" name="nom_categorie" placeholder="Saisir la catégorie à ajouter">
                   <?php  
               
                    // Ajout d'un bouton de Validation et ajout d'un champ caché pour le traitement
                    bouton("Ajouter", "ajouterCategorie");
                    
                   ?>
           </form>
        <?php
    }

    // Traitement du formulaire ci-dessus
    public function ajouterCategorie($pNomCategorie)
    {
        $idDejaExistant = getIdParNom($pNomCategorie,"nom_categorie", "categories");
        
        // S'il retourne un id, c'est que la catégorie est déjà existante, donc on quitte la fonction
        if ( $idDejaExistant != false)
                return false;
        
        else {
            
            // Création d'une catégorie avec seulement un nom
            $sql = "INSERT INTO categories (nom_categorie)
                    VALUES (?)";

            $requeteReussi = insertionBDD($sql, $pNomCategorie);

            if($requeteReussi){
                return false;
            }
            
            $id = getIdParNom($pNomCategorie,"nom_categorie", "categories");
            
            // Affichage de la fiche de la catégorie ajoutée pour la mettre à jour maintenant qu'elle est créée
            $this->afficherFicheCategorie($id);
       }
    }
    
    public function modifierCategorie($pId, $pNom, $pDesignation, $pLienLogo)
    {
       
       // Utilisation d'un booléen pour exécuter une requête avec la bonne syntaxe
       $premiereModif = true;
       
       // Requête d'accès en affichage des données
       $sql = "SELECT *
               FROM categories
               WHERE id_categorie = ".$pId;
       
       $valeurBDD = affichageBDD_uneCol($sql);
       
       
       // Requête d'accès en modification des données
       $chaine = "UPDATE FROM categories 
                  SET ";  
       
       if(comparaisonEntre($pNom, $valeurBDD->nom_categorie, "nom_categorie", true) != false ){
            $chaine .= comparaisonEntre($pNom, $valeurBDD->nom_categorie, "nom_categorie", true);
       
            $premiereModif = false;
       }
    
       if(comparaisonEntre($pDesignation, $valeurBDD->designation_categorie, "designation_categorie", $premiereModif) != false ){
            $chaine .= comparaisonEntre($pDesignation, $valeurBDD->designation_categorie, "designation_categorie", $premiereModif);
            
            $premiereModif = false;
       }
       
       if(comparaisonEntre($pLienLogo, $valeurBDD->lien_logo_categorie, "lien_logo_categorie", $premiereModif) != false ){
            $chaine .= comparaisonEntre($pNom, $valeurBDD->nom_categorie, "nom_categorie", $premiereModif);
       
            $premiereModif = false;
       }
       
       // Si la variable vaut false alors j'exécute l'update de l'enregistrement
       if ( ! $premiereModif) {
           
            $chaine .= "WHERE id_categorie = ". $pId;
            $requetePreparee = $this->lienBDD->prepare($chaine);
            $requeteReussi = $requetePreparee->execute();

            if( ! $requeteReussi )
                return FALSE;
            else
                return TRUE;
       }
       
       $this->afficherFicheCategorie($pId);
    }
    
    public function supprimerCategorie($pId)
    {
        // Récupération des id et des noms des catégories
        $sql = "DELETE FROM categories
                WHERE id_categorie = ".$pId;
        
        $requeteReussi = supprLigneBDD($sql);
        
        if($requeteReussi)
            return true;
        else
            return false;
    }

    // VERIFIER POUR UPDATE EN CASCADE DANS CE CAS LA //
    public function ajouterSousCategorie($pIdCategorie, $pIdSurCategorie)
    {
     
        $idExistant = getInfosParId($pIdCategorie,"categories");
        
        // S'il est différent de false, c'est que la catégorie est déjà existante, donc on continue
        if ($idExistant) {
            
            $sql = "UPDATE categories
                    SET id_sur_categorie = ?
                    WHERE id_categorie = ? ";

            $requeteReussi = modifLigneBDD($sql, array($pIdSurCategorie, $pIdCategorie));
            
            if( ! $requeteReussi )
                return false;
        }
        else 
         return false;
         
     
    }

    public function retirerSousCategorie($pIdCategorie, $pIdSousCategorie)
    {
        /*
        
        $idExistant = getInfosParId($pIdCategorie,"categories");
        
        // S'il est différent de false, c'est que la catégorie est déjà existante, donc on continue
        if ($idExistant) {
            $sql = "UPDATE categories
                    SET id_sous_categorie = ?
                    WHERE id_categorie = ? ";

            $requetePreparee = $this->lienBDD->prepare($sql);
            $requeteReussi = $requetePreparee->execute(array($pIdSousCategorie, $pIdCategorie));
            
            if( ! $requeteReussi )
                return false;
        }
        else 
         return false;
        
        */
    }
    
    // NON IMPLEMENTE (INCOMPLETE)
    public function listeSurCategorie($pIdCategorie){
     
//        $categorie = getInfosParId($pIdCategorie, "categories");
//     
//        $sql = "SELECT *
//                FROM categories
//                WHERE id_sur_categorie = ".$categorie->id_sur_categorie;
//        
//        $surCategorie = affichageBDD_uneCol($sql);
//        
//        if($surCategorie)
//            echo '';
    }

} /* end of class Categorie */

    
?>